import Toast from "@vant/weapp/toast/toast";

Page({
  isChangeAvatar: false, // 是否修改了头像

  data: {
    avatarUrl: "", // 头像地址
    nickName: "", // 昵称
  },

  onLoad() {
    // 获取数据通道对象
    const eventChannel = this.getOpenerEventChannel();
    // 监听 payload 事件
    eventChannel.on("payload", (payload) => {
      console.log("=== payload", payload);
      this.setData({
        avatarUrl: payload.avatarUrl,
        nickName: payload.nickName,
      });
    });
  },

  /**
   * bind:chooseavatar
   */
  onChooseAvatar(event) {
    console.log("=== event", event);
    /**
     * event.detail.avatarUrl 有一个当前选择的头像地址
     *      该地址是一个临时地址，可以直接给到页面去使用。但是要持久化访问都OK的话，需要将该地址内容上传到开发者自己的服务器
     *      该地址可以直接给到 wx.uploadFile 的 filePath 字段去使用
     */
    this.setData({ avatarUrl: event.detail.avatarUrl });
    this.isChangeAvatar = true;
  },

  /**
   * input 的 bind:change
   */
  onInputChange(event) {
    console.log("=== event", event);
    // event.detail.value 就是输入框当前输入的值
    this.setData({ nickName: event.detail.value });
  },

  updatePerson(avatarUrl) {
    const token = wx.getStorageSync("token");
    wx.request({
      method: "POST",
      url: "http://127.0.0.1:8001/app/user/info/updatePerson",
      data: {
        avatarUrl: avatarUrl ? avatarUrl : this.data.avatarUrl,
        nickName: this.data.nickName,
      },
      header: {
        Authorization: token,
      },
      success: ({ data }) => {
        if (data.code !== 1000) {
          Toast({ message: data.message });
          return;
        }

        Toast({
          message: "更新成功",
          onClose: () => {
            this.getOpenerEventChannel().emit("success");

            wx.navigateBack();
          },
        });
      },
    });
  },

  /**
   * 更新用户信息
   *    接口地址：POST http://127.0.0.1:8001/app/user/info/updatePerson
   *    接口参数：
   *        {
   *            avatarUrl: '', // 头像地址
   *            nickName: '', // 昵称
   *        }
   */
  onSave() {
    // 获取token
    const token = wx.getStorageSync("token");
    // 没有修改头像
    if (!this.isChangeAvatar) {
      this.updatePerson();
      return;
    }

    /**
     * 1. 临时的头像地址是不支持使用，需要先做文件上传  wx.uploadFile
     */
    wx.uploadFile({
      // filePath 必须是微信本地的临时文件路径，不能是在线地址
      filePath: this.data.avatarUrl,
      name: "file",
      url: "http://127.0.0.1:8001/app/base/comm/upload",
      success: (res) => {
        console.log("=== uploadFile success", res);
        // res.data 不是一个 对象，而是一个字符串，需要做解析
        const data = JSON.parse(res.data);
        const avatarUrl = data.data;

        // 调用 this.updatePerson()
        this.updatePerson(avatarUrl);
      },
      fail: (error) => {
        console.log("=== uploadFile fail", error);
      },
    });
  },
});
